package com.smarthome.core.housemanager;

import java.util.List;

import com.smarthome.domain.bean.ShAccount;
import com.smarthome.domain.bean.ShResidence;
import com.smarthome.domain.vo.boss.Combobox;
import com.smarthome.domain.vo.boss.DataGrid;
import com.smarthome.domain.vo.boss.PageHelper;
import com.smarthome.domain.vo.boss.Tree;

/**
 * 
 * @author dhc
 * @title 小区管理
 */
public interface ResidenceManagerService {

    /**
     * @title 添加其他额外属性
     * @createTime 2015年9月25日 上午11:52:12
     * @author dhc
     */
    List<ShResidence> addOtherParam(List<ShResidence> residences);

    /**
     * @param residence
     * @param helper
     * @return
     */
    DataGrid getDataGrid(ShResidence residence, PageHelper helper);

    List<ShResidence> queryShResidences(ShResidence residence);

    ShResidence queryResidenceById(Long id);

    /**
     * 
     * @param residence
     * @return
     */
    int add(ShResidence residence);

    /**
     * @param residence
     * @return
     */
    int edit(ShResidence residence);

    /*
	 */
    int delte(Long id);

    /**
     * @return 获取小区树
     */
    List<Tree> getTree();

    /**
     * 获取小区下拉
     * @return
     */
    List<Combobox> getCombobox();

    /**
     * 根据系统用户id查询管理小区
     * @param userId
     * @return
     * @createTime 2015年10月8日 下午7:47:42
     * @author KongXiangyu
     */
    List<ShResidence> queryResidencesByUserId(Long userId);

    /**
     * 重置平台用户小区列表
     * @param account
     * @createTime 2015年10月17日 下午4:04:52
     * @author KongXiangyu
     */
    void resetResidenceForAccount(ShAccount account);

    /**
     * 设置平台哟工行当前小区
     * @param account
     * @param residenceId
     * @createTime 2015年10月17日 下午4:05:44
     * @author KongXiangyu
     */
    void changeCurrentResidenceForAccount(ShAccount account, Long residenceId);
    
    /**
     * 
    * @Title: getCompanyExpressByResidence
    * @Description: 通过小区获取快递公司Tree
    * @param residence
    * @return 
    * List<Tree>  
    * @throws
     */
    List<Tree> getCompanyExpressByResidence(ShResidence residence);
    
    /**
     * 
    * @Title: saveResidenceExpress
    * @Description: 保存小区和快递公司关联
    * @param expressIds
    * @param residenceId 
    * void  
    * @throws
     */
    void saveResidenceExpress(String expressIds,Long residenceId);
    
    
    /**
     * 
    * @Title: getCompanyLaundryByResidence 
    * @Description: 通过小区获取洗衣店Tree 
    * @param residence
    * @return
    * List<Tree>
    * @throws 
    * @author cyj
     */
    List<Tree> getCompanyLaundryByResidence(ShResidence residence);
    
    /**
     * 
    * @Title: saveResidenceLaundry 
    * @Description: 保存小区和洗衣店关联 
    * @param laundryIds
    * @param residenceId
    * void
    * @throws 
    * @author cyj
     */
    void saveResidenceLaundry(String laundryIds,Long residenceId);
}
